menuitem: deprecate toggle-spacing style property
authorCosimo Cecchi <cosimoc@gnome.org>
Sat, 19 Dec 2015 01:52:16 +0000 (17:52 -0800)
committerCosimo Cecchi <cosimoc@gnome.org>
Sun, 20 Dec 2015 05:21:16 +0000 (21:21 -0800)
We can move this to just use the actual GtkCssGadget of the menu item.

gtk/Makefile.am
gtk/gtkcheckmenuitem.c
gtk/gtkcheckmenuitem.h
gtk/gtkcheckmenuitemprivate.h [new file with mode: 0644]
gtk/gtkmenu.c
gtk/gtkmenuitem.c
gtk/gtkmodelmenuitem.c
gtk/gtkradiomenuitem.c
gtk/theme/Adwaita/_common.scss
gtk/theme/Adwaita/gtk-contained-dark.css
gtk/theme/Adwaita/gtk-contained.css

index f0a9099a600c58947d440c8db9b1e9fc68490212..77f645d37122174608d45d7ebfbce51ba1447037 100644 (file)
@@ -371,6 +371,7 @@ gtk_private_h_sources =             \
        gtkcairoblurprivate.h   \
        gtkcellareaboxcontextprivate.h  \
        gtkcheckbuttonprivate.h \
+       gtkcheckmenuitemprivate.h       \
        gtkclipboardprivate.h           \
        gtkcolorswatchprivate.h \
        gtkcoloreditorprivate.h \
index e0d947b219513e3623d2493aedd3272825e76d2e..687b5dd3d9cb5e193ae4633c730a9cd7118db12b 100644 (file)
@@ -832,3 +832,9 @@ _gtk_check_menu_item_set_active (GtkCheckMenuItem *check_menu_item,
   priv->active = is_active;
   update_node_state (check_menu_item);
 }
+
+GtkCssGadget *
+_gtk_check_menu_item_get_indicator_gadget (GtkCheckMenuItem *check_menu_item)
+{
+  return check_menu_item->priv->indicator_gadget;
+}
index f7910380557e040ae4a81bf576845845062bb679..be1af00deeff3ea78f6425e311edac016e0b0bda 100644 (file)
@@ -108,12 +108,6 @@ void       gtk_check_menu_item_set_draw_as_radio (GtkCheckMenuItem *check_menu_i
 GDK_AVAILABLE_IN_ALL
 gboolean   gtk_check_menu_item_get_draw_as_radio (GtkCheckMenuItem *check_menu_item);
 
-
-/* private */
-void       _gtk_check_menu_item_set_active       (GtkCheckMenuItem *check_menu_item,
-                                                  gboolean          is_active);
-
-
 G_END_DECLS
 
 #endif /* __GTK_CHECK_MENU_ITEM_H__ */
diff --git a/gtk/gtkcheckmenuitemprivate.h b/gtk/gtkcheckmenuitemprivate.h
new file mode 100644 (file)
index 0000000..3a7d000
--- /dev/null
@@ -0,0 +1,32 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GTK_CHECK_MENU_ITEM_PRIVATE_H__
+#define __GTK_CHECK_MENU_ITEM_PRIVATE_H__
+
+#include <gtk/gtkcheckmenuitem.h>
+#include <gtk/gtkcssgadgetprivate.h>
+
+G_BEGIN_DECLS
+
+void       _gtk_check_menu_item_set_active       (GtkCheckMenuItem *check_menu_item,
+                                                  gboolean          is_active);
+GtkCssGadget * _gtk_check_menu_item_get_indicator_gadget (GtkCheckMenuItem *check_menu_item);
+
+G_END_DECLS
+
+#endif /* __GTK_CHECK_MENU_ITEM_PRIVATE_H__ */
index 16d5193786af96d2e4cf4216ccd5fe5b8e7fbc00..05d6975d310f52dd23c833b3b322dda6b86622ca 100644 (file)
 #include "gtkadjustment.h"
 #include "gtkbindings.h"
 #include "gtkcheckmenuitem.h"
+#include "gtkcheckmenuitemprivate.h"
 #include "gtkmain.h"
 #include "gtkmarshalers.h"
 #include "gtkmenuprivate.h"
@@ -3227,29 +3228,23 @@ gtk_menu_get_preferred_width (GtkWidget *widget,
       gtk_menu_get_n_columns (menu) == 1 &&
       !priv->no_toggle_size)
     {
-      GtkStyleContext *context;
-      GtkWidgetPath *check_path;
-      guint toggle_spacing;
-      guint indicator_size;
-
-      context = gtk_style_context_new ();
-
-      /* Create a GtkCheckMenuItem path, only to query indicator spacing */
-      check_path = _gtk_widget_create_path (widget);
-      gtk_widget_path_append_type (check_path, GTK_TYPE_CHECK_MENU_ITEM);
-
-      gtk_style_context_set_path (context, check_path);
-      gtk_widget_path_free (check_path);
-      gtk_style_context_set_screen (context, gtk_widget_get_screen (widget));
-
-      gtk_style_context_get_style (context,
-                                   "toggle-spacing", &toggle_spacing,
-                                   "indicator-size", &indicator_size,
-                                   NULL);
-
-      max_toggle_size = indicator_size + toggle_spacing;
-
-      g_object_unref (context);
+      GtkWidget *menu_item;
+      GtkCssGadget *indicator_gadget;
+      gint indicator_width;
+
+      /* Create a GtkCheckMenuItem, to query indicator size */
+      menu_item = gtk_check_menu_item_new ();
+      indicator_gadget = _gtk_check_menu_item_get_indicator_gadget
+        (GTK_CHECK_MENU_ITEM (menu_item));
+
+      gtk_css_gadget_get_preferred_size (indicator_gadget,
+                                         GTK_ORIENTATION_HORIZONTAL,
+                                         -1,
+                                         &indicator_width, NULL,
+                                         NULL, NULL);
+      max_toggle_size = indicator_width;
+
+      gtk_widget_destroy (menu_item);
     }
 
   min_width += 2 * max_toggle_size + max_accel_width;
index ba852517ea651c8ddf370573031f3a8f377fdc3a..a984d56cc57d25956dfaf2909feae8a61cf578cd 100644 (file)
@@ -934,6 +934,14 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass)
                                                              GTK_PARAM_READABLE |
                                                              G_PARAM_DEPRECATED));
 
+  /**
+   * GtkMenuItem:toggle-spacing:
+   *
+   * Spacing between menu icon and label.
+   *
+   * Deprecated: 3.20: use the standard margin CSS property on the check or
+   *   radio nodes; the value of this style property is ignored.
+   */
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_int ("toggle-spacing",
                                                              "Icon Spacing",
@@ -941,7 +949,7 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass)
                                                              0,
                                                              G_MAXINT,
                                                              5,
-                                                             GTK_PARAM_READABLE));
+                                                             GTK_PARAM_READABLE|G_PARAM_DEPRECATED));
 
   /**
    * GtkMenuItem:arrow-spacing:
index 8591a7e837d519d93c1948dac1357779ca1adcd5..103f053e6e9731aac3d05946a2eeec3b841ac124 100644 (file)
@@ -22,6 +22,7 @@
 #include "gtkmodelmenuitem.h"
 
 #include "gtkaccellabel.h"
+#include "gtkcheckmenuitemprivate.h"
 #include "gtkimage.h"
 #include "gtkbox.h"
 
index ee70dd70ca17c81deb919859499c90215e31b795..b8bd75dd8acc55c0d43d2597d80b34f275127c2f 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "config.h"
 #include "gtkaccellabel.h"
+#include "gtkcheckmenuitemprivate.h"
 #include "gtkmarshalers.h"
 #include "gtkradiomenuitem.h"
 #include "deprecated/gtkactivatable.h"
index 6f407f2deb87d9135e7b4a257844d9de1eddf241..416601f4276bdff701f1568454a13b1b19811622 100644 (file)
@@ -1540,8 +1540,14 @@ menu,
   }
 }
 
-menuitem accelerator { color: gtkalpha(currentColor,0.55); }
-
+menuitem {
+  & accelerator { color: gtkalpha(currentColor,0.55); }
+  & check,
+  & radio {
+    &:dir(ltr) { margin-right: 7px; }
+    &:dir(rtl) { margin-left: 7px; }
+  }
+}
 
 /***************
  * Popovers   *
@@ -2096,8 +2102,6 @@ switch {
     color: mix($fg_color, $bg_color, 70%);
     -gtk-icon-source: -gtk-icontheme('#{$a}-symbolic');
     -gtk-icon-shadow: none;
-    &:dir(ltr) { margin-right: 7px; }
-    &:dir(rtl) { margin-left: 7px; }
     &:hover, &:insensitive {
       -gtk-icon-source: -gtk-icontheme('#{$a}-symbolic');
       -gtk-icon-shadow: none;
index a48cfdac9961e78776426ff69d9746e51ea4baa5..e3db13a3f9e8fe7c50c0f3ca44fbce0e6a1587ee 100644 (file)
@@ -2154,6 +2154,10 @@ menu,
 
 menuitem accelerator {
   color: alpha(currentColor,0.55); }
+menuitem check:dir(ltr), menuitem radio:dir(ltr) {
+  margin-right: 7px; }
+menuitem check:dir(rtl), menuitem radio:dir(rtl) {
+  margin-left: 7px; }
 
 /***************
  * Popovers   *
@@ -2771,10 +2775,6 @@ menu menuitem check {
   color: #b8bab8;
   -gtk-icon-source: -gtk-icontheme("checkbox-symbolic");
   -gtk-icon-shadow: none; }
-  menu menuitem check:dir(ltr) {
-    margin-right: 7px; }
-  menu menuitem check:dir(rtl) {
-    margin-left: 7px; }
   menu menuitem check:hover, menu menuitem check:insensitive {
     -gtk-icon-source: -gtk-icontheme("checkbox-symbolic");
     -gtk-icon-shadow: none; }
@@ -2937,10 +2937,6 @@ menu menuitem radio {
   color: #b8bab8;
   -gtk-icon-source: -gtk-icontheme("radio-symbolic");
   -gtk-icon-shadow: none; }
-  menu menuitem radio:dir(ltr) {
-    margin-right: 7px; }
-  menu menuitem radio:dir(rtl) {
-    margin-left: 7px; }
   menu menuitem radio:hover, menu menuitem radio:insensitive {
     -gtk-icon-source: -gtk-icontheme("radio-symbolic");
     -gtk-icon-shadow: none; }
index a328289a4dcad37548db2e72678b2eb2e032389a..5745ea346583a512515c9754d13a22e2cacb56cb 100644 (file)
@@ -2160,6 +2160,10 @@ menu,
 
 menuitem accelerator {
   color: alpha(currentColor,0.55); }
+menuitem check:dir(ltr), menuitem radio:dir(ltr) {
+  margin-right: 7px; }
+menuitem check:dir(rtl), menuitem radio:dir(rtl) {
+  margin-left: 7px; }
 
 /***************
  * Popovers   *
@@ -2861,10 +2865,6 @@ menu menuitem check {
   color: #666a6b;
   -gtk-icon-source: -gtk-icontheme("checkbox-symbolic");
   -gtk-icon-shadow: none; }
-  menu menuitem check:dir(ltr) {
-    margin-right: 7px; }
-  menu menuitem check:dir(rtl) {
-    margin-left: 7px; }
   menu menuitem check:hover, menu menuitem check:insensitive {
     -gtk-icon-source: -gtk-icontheme("checkbox-symbolic");
     -gtk-icon-shadow: none; }
@@ -3099,10 +3099,6 @@ menu menuitem radio {
   color: #666a6b;
   -gtk-icon-source: -gtk-icontheme("radio-symbolic");
   -gtk-icon-shadow: none; }
-  menu menuitem radio:dir(ltr) {
-    margin-right: 7px; }
-  menu menuitem radio:dir(rtl) {
-    margin-left: 7px; }
   menu menuitem radio:hover, menu menuitem radio:insensitive {
     -gtk-icon-source: -gtk-icontheme("radio-symbolic");
     -gtk-icon-shadow: none; }